package com.tbit.main.util.fuse;

/**
 * 熔断器闭合状态
 * 在闭合状态下，如果发生错误，并且错误次数达到阈值，则状态机切换到断开状态
 *
 * @Author:BUGTian
 * @DATE: 2021/10/25
 */
public class CloseState extends AbstractBreakerState {

    public CloseState(BreakerManager manager) {
        super(manager);
        //重置失败计算器
        manager.resetFailureCount();
    }

    /**
     * 方法调用发生异常操作后的操作
     */
    @Override
    public void ActUponException() {
        super.ActUponException();
        //如果失败达到阈值，切换到断开状态
        if (manager.failureThresholdReached()) {
            manager.moveToOpenState();
        }
    }
}
